package com.google.gwt.sample.dynatablerf.client.user.presenters;

import java.util.Set;

import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.sample.dynatablerf.shared.CategoriaProxy;
import com.google.gwt.sample.dynatablerf.shared.ProdutoProxy;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;

public class ProdutoListPresenter {

	public interface ProdutoDisplay extends IsWidget {

		void copyFrom(Set<ProdutoProxy> produtoProxySet);
	}

	private ProdutoDisplay produtoDisplay;
	private CategoriaProxy parent;

	public ProdutoListPresenter(ProdutoDisplay produtoDisplay,
			CategoriaProxy parent) {
		super();
		this.produtoDisplay = produtoDisplay;
		this.parent = parent;
	}

	public void go(final HasWidgets container) {
		fetch();
		Scheduler.get().scheduleDeferred(new ScheduledCommand() {

			@Override
			public void execute() {
				container.clear();
				container.add(produtoDisplay.asWidget());
			}
		});
	}

	private void fetch() {

		produtoDisplay.copyFrom(parent.getProdutoSet());
	}
}
